package affcom;


public class ConvUtil
{
    //static final char[] chars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

    public static boolean caractereHexValide(char c)
    {
        //System.out.println("code caractere : " + Character.digit(c, 16));
        int vc = Character.digit(c, 16);
        return (vc < 16) & (vc >= 0);
    }

    public static boolean caractereBinValide(char c)
    {
        return Character.digit(c, 2) < 2;
    }

    public static int strHexToInt(char[] caracteres, int nombreCaracteres)
    {
       int result = 0;
       for (int i = 0;  i < nombreCaracteres; i++)
       {
          result = result +  (Character.digit(caracteres[i], 16) << (nombreCaracteres -1 -i) * 4);
       }
       return result;
    }

    public static int strBinToInt(char[] caracteres, int nombreCaracteres)
    {
       int result = 0;
       for (int i = 0;  i < nombreCaracteres; i++)
       {
          result = result +  (Character.digit(caracteres[i], 2) << (nombreCaracteres -1 -i));
       }
       return result;
    }

    public static void intToHexString(final int entier, char[] caracteres, int nombreCaracteres)
    {
       for (int i = 0;  i < nombreCaracteres; i++)
       {
          caracteres[i] = Character.forDigit((entier >> ((nombreCaracteres -1 -i) * 4) & 0xf), 16);
       }
    }

    public static void  intToBinString(int entier, char[] caracteres, int nombreCaracteres)
    {
       for (int i = 0;  i < nombreCaracteres; i++)
       {
          caracteres[i] = Character.forDigit((entier >> (nombreCaracteres -1 -i)) & 1, 2);
       }
    }

    public static char hexPred(char aChar)
    {
       int val = Character.digit(aChar, 16);
       val = (val - 1) & 0xf;
       return Character.forDigit(val, 16);
    }

    public static char hexSucc(char aChar)
    {
       int val = Character.digit(aChar, 16);
       val = (val +1) & 0xf;
       return Character.forDigit(val, 16);
    }

    public static char binCompl(char aChar)
    {
       int val = Character.digit(aChar, 2);
       val = (val +1) & 0x1;
       return Character.forDigit(val, 2);
    }

}